package ar.com.tallerdos.smartdinner.model;

import java.io.Serializable;

import com.google.gson.annotations.Expose;

@SuppressWarnings("serial")
public class Agregado implements Identity, Serializable, Comparable<Agregado> {    

    public static final Integer TIPO_SALSA = 2;
    public static final Integer TIPO_GUARNICION = 1;

    @Expose
    private Integer id;

    @Expose
    private String codigo;
    
    @Expose
    private String descripcion;

    @Expose
    private Integer tipo;

    @Expose
    private Integer precio;

    @Expose
    private Boolean activo;
    
    @Expose
    private Integer stock;


    public Agregado() {
	this.descripcion = "";
	this.stock = Integer.valueOf(1);
    }

    public Agregado(String descripcion) {
	this.descripcion = descripcion;
    }

    public Integer getId() {
	return id;
    }

    public void setId(Integer id) {
	this.id = id;
    }

    public String getDescripcion() {
	return descripcion;
    }

    public void setDescripcion(String descripcion) {
	this.descripcion = descripcion;
    }

    public String getCodigo() {
	return codigo;
    }

    public void setCodigo(String codigo) {
	this.codigo = codigo;
    }

    public Boolean getActivo() {
	return activo;
    }

    public void setActivo(Boolean activo) {
	this.activo = activo;
    }

    @Override
    public String toString() {
	return (descripcion != null ? descripcion : "");
    }
    
    public void setPrecio(Integer precio){
    	this.precio = precio;
    }
    
    public Integer getPrecio(){
    	return this.precio;
    }
    
    public void setTipo(Integer tipo){
    	this.tipo = tipo;
    }
    
    public Integer getTipo(){
    	return this.tipo;
    }

    @Override
    public int compareTo(Agregado another) {
	return this.id.compareTo(another.getId());
    }

    public Boolean esSalsa() {
	if (this.tipo.equals(TIPO_SALSA)) {
	    return true;
	} else {
	    return false;
	}
    }
    
    public Boolean esGuarnicion() {
	if (this.tipo.equals(TIPO_GUARNICION)) {
	    return true;
	} else {
	    return false;
	}
    }

    @Override
    public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	return result;
    }

    @Override
    public boolean equals(Object obj) {
	if (this == obj)
	    return true;
	if (obj == null)
	    return false;
	if (getClass() != obj.getClass())
	    return false;
	Agregado other = (Agregado) obj;
	if (id == null) {
	    if (other.id != null)
		return false;
	} else if (!id.equals(other.id))
	    return false;
	return true;
    }

    public Integer getStock() {
        return stock;
    }

    public void setStock(Integer stock) {
        this.stock = stock;
    }

    public boolean hayStock() {
	return this.stock.equals(Integer.valueOf(1));
    }
    
    
}
